//import Foundation
//import TunnelKitOpenVPNCore
//import TunnelKitCore
//import TunnelKitManager
//import TunnelKitOpenVPN
//import NetworkExtension
//
//class VpnManager: NSObject {
//    static let shared = VpnManager()
//
//    private let vpn = NetworkExtensionVPN()
//    private let fileManager = FileManager.default
//    private var vpnConfigFile: URL
//    private override init() {
//        let urls = fileManager.urls(for: .documentDirectory, in: .userDomainMask)
//        guard let documentsDirectory = urls.first else {
//            fatalError("找不到文件路径")
//        }
//        self.vpnConfigFile = documentsDirectory.appendingPathComponent("my_node.ovpn")
//        
//        super.init()
//        
//        copyConfigFileToDocuments()
//    }
//    
//    
//    func fileURLInDocumentsDirectory(for fileName: String) -> URL? {
//        // 获取文档目录的URL
//        guard let documentsDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first else {
//            return nil
//        }
//        
//        // 构建文件的完整路径URL
//        let fileURL = documentsDirectory.appendingPathComponent(fileName)
//        
//        // 检查文件是否存在
//        if FileManager.default.fileExists(atPath: fileURL.path) {
//            return fileURL
//        } else {
//            return nil
//        }
//    }
//    
//    private func copyConfigFileToDocuments() {
//        if let bundlePath = Bundle.main.path(forResource: "my_node", ofType: "ovpn") {
//            let destinationPath = vpnConfigFile.path
//
//            if !fileManager.fileExists(atPath: destinationPath) {
//                do {
//                    try fileManager.copyItem(atPath: bundlePath, toPath: destinationPath)
//                    print("文件已存在")
//                } catch {
//                    print("复制文件错误 \(error)")
//                }
//            } else {
//                print("文件已存在")
//            }
//        } else {
//            print("Config file not found in bundle")
//        }
//    }
//    
//
//    
//    func makeConfig() -> OpenVPN.ProviderConfiguration? {
//       
//        
//        let index = UserDefaultsManager.shared.getInt(forKey: "vpnList")
//        
//        //let index = -1
//        let path: String
//
//        if #available(iOS 16.0, *) {
//            if index == -1{
//                path = vpnConfigFile.path()
//            }else{
//                path = fileURLInDocumentsDirectory(for: "hot\(index).ovpn")!.path()
//
//            }
//        } else {
//            if index == -1{
//                path = vpnConfigFile.path
//            }else{
//                path = fileURLInDocumentsDirectory(for: "hot1.ovpn")!.path
//
//            }
//        }
//        
//        guard FileManager.default.fileExists(atPath: path) else {
//            return nil
//        }
//        
//        print("文件路径: \(path)")
//        
//        do {
//            let fileContents = try String(contentsOfFile: path, encoding: .utf8)
//          //  print("文件内容\(fileContents)")
//        } catch {
//            print("Failed to read VPN configuration file: \(error)")
//            return nil
//        }
//        
//        guard let builder = try? OpenVPN.ConfigurationParser.parsed(fromURL: vpnConfigFile) else {
//            print("Failed to parse VPN configuration file")
//            return nil
//        }
//        
//        let cfg = builder.configuration
//        var providerConfiguration = OpenVPN.ProviderConfiguration(vpnName, appGroup: vpnGroup, configuration: cfg)
//        providerConfiguration.shouldDebug = true
//        providerConfiguration.masksPrivateData = false
//        return providerConfiguration
//    }
//
//    
//    // 连接
//    func connect() {
//       
//        guard let cfg = makeConfig() else {
//            print("连接失败")
//            return
//        }
//        Task {
//            let extra = NetworkExtensionExtra()
//            do {
//                try await vpn.reconnect(
//                   vpnPackgeName,
//                    configuration: cfg,
//                    extra: extra,
//                    after: .seconds(2)
//                )
//                print("连接无异常")
//            } catch {
//                print("连接错误: \(error)")
//            }
//        }
//    }
//    
//  
//     func disconnect() {
//        Task {
//            await vpn.disconnect()
//            print("关闭连接")
//        }
//    }
//    
//    
//    public func reconnect() {
//        disconnect()
//        DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
//            self.connect()
//        }
//    }
//}
